/* Prism components — rank_card: a per-category ranking board (featured #1 + ranked
   rows 2..n + a CSS-driven "no data" empty state). Used in a grid to form a 排行模块. */
.c-rankcard{display:flex;flex-direction:column;min-height:200px;
  background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-1);padding:var(--space-md) var(--space-md) var(--space-sm)}
.c-rankcard__head{font-size:var(--fs-md);font-weight:700;text-align:center;
  padding-bottom:var(--space-sm);margin-bottom:var(--space-xs);border-bottom:1px solid var(--c-border)}
.c-rankcard__list{display:flex;flex-direction:column}

/* ── featured #1 ── */
.c-rankcard__feat{display:flex;gap:var(--space-md);padding:var(--space-md) 0;border-bottom:1px solid var(--c-border)}
.c-rankcard__poster{position:relative;flex:none;width:80px;aspect-ratio:3 / 4;border-radius:var(--radius-sm);overflow:hidden}
.c-rankcard__poster img{width:100%;height:100%;object-fit:cover}
.c-rankcard__cat{position:absolute;top:3px;right:3px;font-size:10px;line-height:1;padding:.28em .42em;
  border-radius:var(--radius-sm);background:rgba(16,185,129,.92);color:#fff}
.c-rankcard__state{position:absolute;left:0;bottom:0;width:100%;font-size:10px;line-height:1;
  padding:.32em .4em;text-align:center;background:rgba(0,0,0,.62);color:#fff}
.c-rankcard__meta{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:.34em}
.c-rankcard__row1{display:flex;align-items:flex-start;gap:.6em}
.c-rankcard__feat-name{flex:1;min-width:0;font-size:var(--fs-sm);font-weight:600}
.c-rankcard__feat:hover .c-rankcard__feat-name{color:var(--c-accent)}
.c-rankcard__sub{font-size:var(--fs-xs)}

/* ── ranked rows 2..n ── */
.c-rankcard__item{display:flex;align-items:center;gap:var(--space-sm);padding:.62em 0;border-bottom:1px solid var(--c-border)}
.c-rankcard__item:last-child{border-bottom:0}
.c-rankcard__name{flex:1;min-width:0;font-size:var(--fs-sm)}
.c-rankcard__item:hover .c-rankcard__name{color:var(--c-accent)}

/* ── rank badges ── 1 red, 2 orange, 3 amber, 4+ muted ── */
.c-rankcard__no{display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:#fff}
.c-rankcard__poster .c-rankcard__no--1{position:absolute;top:0;left:0;width:22px;height:22px;
  font-size:var(--fs-xs);background:#ef4444;border-bottom-right-radius:var(--radius-sm)}
.c-rankcard__item .c-rankcard__no{flex:none;width:20px;height:20px;border-radius:50%;font-size:var(--fs-xs);background:var(--c-text-muted)}
.c-rankcard__no--2{background:#f97316!important}
.c-rankcard__no--3{background:#f59e0b!important}

/* ── score ── */
.c-rankcard__score{flex:none;font-size:var(--fs-sm);font-weight:700;color:#10b981}
.c-rankcard__score small{font-size:.78em;font-weight:400}

/* ── empty state — visible by default, hidden once the card has a featured item ── */
.c-rankcard__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.5em;padding:var(--space-xl) 0;color:var(--c-text-muted)}
.c-rankcard__empty .bi{font-size:2.4rem;line-height:1;opacity:.4}
.c-rankcard__empty span{font-size:var(--fs-sm)}
.c-rankcard:has(.c-rankcard__feat) .c-rankcard__empty{display:none}
